home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / program / funnel.zoo / sources / texhead.ctx < prev    next >
Text File  |  1993-04-11  |  16KB  |  321 lines

  1.  WX("%===================== Start of FunnelWeb TeX Definitions ======================");
  2.  WX("");
  3.  WX("");
  4.  WX("% Version");
  5.  WX("% -------");
  6.  WX("% This is FunnelWeb TeX Macro Library Version 1.0.");
  7.  WX("");
  8.  WX("");
  9.  WX("% Copyright");
  10.  WX("% ---------");
  11.  WX("% This set of FunnelWeb TeX definitions was written by Ross Williams and was");
  12.  WX("% originally Copyright (C) 1992 Ross N. Williams.  However, I, Ross Williams,");
  13.  WX("% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions");
  14.  WX("% and hereby authorize that the set of TeX definitions pass into the public");
  15.  WX("% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.");
  16.  WX("");
  17.  WX("");
  18.  WX("% Modification");
  19.  WX("% ------------");
  20.  WX("% Please record all modifications to these TeX definitions here. Unless");
  21.  WX("% otherwise specified, all modified definitions fall in the public domain too.");
  22.  WX("%");
  23.  WX("% Programmers:");
  24.  WX("%    RNW  Ross N. Williams  ross@spam.adelaide.edu.au");
  25.  WX("%");
  26.  WX("% Changes:");
  27.  WX("%    07-May-1992  RNW  Prepared this work for public domain release.");
  28.  WX("%");
  29.  WX("");
  30.  WX("");
  31.  WX("% General Comments");
  32.  WX("% ----------------");
  33.  WX("% This set of TeX definitions exists for two reasons:");
  34.  WX("%");
  35.  WX("%    1. To shorten and neaten the FunnelWeb TeX output.");
  36.  WX("%    2. To allow users to fiddle with the output format in their input files");
  37.  WX("%       (by inserting redefining \"\\def\"s) without having to resort to");
  38.  WX("%       modifying the FunnelWeb code.");
  39.  WX("%");
  40.  WX("% The user is warned that these definitions may be changed from time to time");
  41.  WX("% (but probably not much). The user should not be too sneaky. In particular,");
  42.  WX("% users wishing to redefine some of these macros should do so in an explicitly");
  43.  WX("% defined section at the top of their input file. This will mean that in the");
  44.  WX("% event of problems, that section can simply be deleted or commented out to");
  45.  WX("% allow the document to at least be typeset in the default format. Users should");
  46.  WX("% limit themselves to redefining these macros in such a section and should");
  47.  WX("% refrain from using the macros throughout their documents.");
  48.  WX("");
  49.  WX("");
  50.  WX("% Environment Parameters");
  51.  WX("% ----------------------");
  52.  WX("% \\tolerance tells TeX how tolerant it should be about making bad line and");
  53.  WX("% page breaks. Here we set it to it's maximum, as");
  54.  WX("%   1) Computer programs are likely to cause lots of bad breaks.");
  55.  WX("%   2) In most cases the user would probably rather get the TeX file through");
  56.  WX("%      TeX without any errors than fiddle with spacings for perfection.");
  57.  WX("\\tolerance=10000");
  58.  WX("");
  59.  WX("% I don't like indentation as it makes the page look more busy. Instead,");
  60.  WX("% paragraphs are separated by a little space (see next).");
  61.  WX("\\parindent=0pt");
  62.  WX("");
  63.  WX("% In many cases, users will produce documents with long runs of paragraphs.");
  64.  WX("% In order to space out these paragraphs, it is convenient to maintain a");
  65.  WX("% prevailing non-zero \\parskip (end-of-paragaph skip). The only trouble is");
  66.  WX("% that the skip becomes a problem in macro definitions which require no skip");
  67.  WX("% and so we have to turn the skip on and off. The following two macros");
  68.  WX("% simplify this process.");
  69.  WX("\\def\\fwparskipon{\\parskip=\\medskipamount}");
  70.  WX("\\def\\fwparskipoff{\\parskip=0pt}");
  71.  WX("\\fwparskipon");
  72.  WX("");
  73.  WX("% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the");
  74.  WX("% page in order to better vertically align the rest of the page (e.g. skips");
  75.  WX("% won't stretch as much). It also means that headings are less likely to be");
  76.  WX("% isolated at the bottom of the page without any following text.");
  77.  WX("\\raggedbottom");
  78.  WX("");
  79.  WX("");
  80.  WX("% Fonts");
  81.  WX("% -----");
  82.  WX("% Most of the typeset output is set in 10pt roman and 10pt tt font.");
  83.  WX("% The major extra font needs spring from titles and headings.");
  84.  WX("% For portability's sake we use only the following fonts:");
  85.  WX("%    cmr10");
  86.  WX("%    cmbx10");
  87.  WX("%    cmtt10");
  88.  WX("% and some enlargements of them. These fonts are all \"standard\" fonts");
  89.  WX("% in Plain TeX. See The TeXbook p.350.");
  90.  WX("\\font\\fwfontnote=cmr7");
  91.  WX("");
  92.  WX("\\font\\fwfontnorm=cmr10");
  93.  WX("\\font\\fwfontnorma=cmr10 scaled \\magstep1");
  94.  WX("\\font\\fwfontnormb=cmr10 scaled \\magstep2");
  95.  WX("");
  96.  WX("\\font\\fwfontbold=cmbx10");
  97.  WX("\\font\\fwfontbolda=cmbx10 scaled \\magstep1");
  98.  WX("\\font\\fwfontboldb=cmbx10 scaled \\magstep2");
  99.  WX("\\font\\fwfontboldc=cmbx10 scaled \\magstep3");
  100.  WX("\\font\\fwfontboldd=cmbx10 scaled \\magstep4");
  101.  WX("");
  102.  WX("");
  103.  WX("% Macros for Stylistic Details");
  104.  WX("% ----------------------------");
  105.  WX("% This section contains all the fiddly little macros for setting the details");
  106.  WX("% of each macro definition.");
  107.  WX("");
  108.  WX("% Macro definitions are sandwiched by calls to these macros which can be used");
  109.  WX("% to sort out the spacing before and after the macro definition.");
  110.  WX("\\def\\fwbeginmacro{\\fwparskipoff\\bigskip}");
  111.  WX("\\def\\fwendmacro{\\fwparskipon\\par}");
  112.  WX("");
  113.  WX("% These macros deal with the macro name and definition line.");
  114.  WX("\\def\\fwmacroname#1#2{{\\sl #1\\/}$\\lbrack$#2$\\rbrack$}");
  115.  WX("\\def\\fwfilename#1#2{{\\bf #1}$\\lbrack$#2$\\rbrack$}");
  116.  WX("\\def\\fwzero#1{{\\bf Z}}");
  117.  WX("\\def\\fwmany#1{{\\bf M}}");
  118.  WX("\\def\\fwequals{ $\\equiv$}");
  119.  WX("\\def\\fwplusequals{ $+\\equiv$}");
  120.  WX("");
  121.  WX("% Now for the actual body of the definition. It looks nice to have the tt");
  122.  WX("% code indented a little. Again, we use macros instead of writing direct TeX,");
  123.  WX("% so as to allow the user to fiddle this stuff to taste without having to");
  124.  WX("% modify the FunnelWeb C code.");
  125.  WX("\\def\\fwodef{\\parindent=15pt\\vskip0pt$\\lbrace$\\parindent=20pt}");
  126.  WX("\\def\\fwcdef{$\\rbrace$\\vskip0pt\\parindent=0pt}");
  127.  WX("\\def\\fwoquote{`}");
  128.  WX("\\def\\fwcquote{'}");
  129.  WX("\\def\\fwoparen{$($}");
  130.  WX("\\def\\fwcomma{$,$}");
  131.  WX("\\def\\fwcparen{$)$}");
  132.  WX("\\def\\fwparam#1{$\\diamond #1$}");
  133.  WX("\\def\\fwparams#1{$(\\diamond #1)$}");
  134.  WX("");
  135.  WX("% These macros deal with the notes that are appended at the end of each");
  136.  WX("% macro definition. Note that even though \\fwisafile,\\fwusedin, and \\fwseealso");
  137.  WX("% have the same definition, they are given different names so as to allow the");
  138.  WX("% user to redefine these macros to typeset each kind of information differently");
  139.  WX("% if desired.");
  140.  WX("\\def\\fwbeginmacronotes{\\begingroup\\baselineskip=9pt\\smallskip}");
  141.  WX("\\def\\fwnote#1{{\\fwfontnote #1}\\par}");
  142.  WX("\\def\\fwisafile#1{\\fwnote{#1}}");
  143.  WX("\\def\\fwusedin#1{\\fwnote{#1}}");
  144.  WX("\\def\\fwseealso#1{\\fwnote{#1}}");
  145.  WX("\\def\\fwendmacronotes{\\endgroup}");
  146.  WX("");
  147.  WX("");
  148.  WX("% Macros to Typeset Program Code Verbatim");
  149.  WX("% ---------------------------------------");
  150.  WX("% This is by far the hairiest and most difficult part of the typesetting task");
  151.  WX("% because we have to turn off most of TeX's natural instincts in order to");
  152.  WX("% typeset the program text exactly as it appears in the input file.");
  153.  WX("% Two macros are defined to pull this off: \\fwbtx and \\fwverbatimgobble.");
  154.  WX("% Their code was inspired by the following sections of \"The TeXbook\":");
  155.  WX("%    Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.");
  156.  WX("%    Appendix E: Example Formats, p.421.");
  157.  WX("% The \\fwbtx[ (for \"FunnelWeb Begin TeXt\") macro does most of the hard work.");
  158.  WX("% The liberal use of \"%\" is because I don't understand TeX well enough to");
  159.  WX("% understand when an end of line will cause trouble, and I am playing it safe.");
  160.  WX("");
  161.  WX("% Before defining the main \\fwbtx macro, we have to stash away some definitions");
  162.  WX("% in the hidden part of TeX's environment. Let's hope that these \"hidden\"");
  163.  WX("% definitions don't affect anything except what is desired to be affected.");